const ipUtil = require("./utils/hostUtil")
const requestUtil = require("./utils/requestUtil")
const amap = require("./lib/amap-wx")
App({
    onLaunch: function () {
        var token = wx.getStorageSync("token")
        if (token == undefined || token == "") {
            this.login();
        }
        var login = wx.getStorageSync("login");
        // 如果用户已经登录
        if (wx.getStorageSync("login")) {
            this.checkSession();
            this.getUserInfo()
        }
        // 如果是发货人登录 则跳转到发货页面
        if (wx.getStorageSync("role") == 2) {
            wx.redirectTo({
                url: "/pages/ship/ship"
            })
        }
    },
    onShow:function(){
        this.getUserInfo()
    },
    // 登录
    login: function () {
        var that = this;
        if(app.globalData.login){
			wx.login({
			    success: res => {
					console.log(res)
			        // 发送 res.code 到后台换取 openId, sessionKey, unionId
			        wx.request({
			            url: `${ipUtil.host}${requestUtil.login}`,
			            data: {code: res.code},
			            header: requestUtil.header,
			            method: "POST",
			            success(res) {
			                console.log(res)
			                wx.setStorageSync("token", res.data.token)
			                that.globalData.login = true;
			                wx.setStorageSync("login", true);
			                wx.setStorageSync("role",res.data.role)
			                if (res.data.firstLogin) {
			                    // 获取地址 如果用户拒绝授权 则 不发送首次登录地址请求
			                    that.getLocation();
			                }
			            }
			        })
			    }
			})
		}
    },
    getUserInfo: function () {
        var that = this;
        // 获取用户信息
        wx.getSetting({
            success: res => {
                if (res.authSetting['scope.userInfo']) {
                    // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
                    wx.getUserInfo({
                        success: res => {
                            // 可以将 res 发送给后台解码出 unionId
                            that.globalData.userInfo = res.userInfo
							// console.log( that.globalData.userInfo  )
                            // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
                            // 所以此处加入 callback 以防止这种情况
                            if (that.userInfoReadyCallback) {
                                that.userInfoReadyCallback(res)
                            }
                        }
                    })
                }
            }, fail(res) {
                // 引导用户重新授权
                wx.showModal({
                    title: "请授权我们获取用户信息",
                    success(res) {
                        if (res.confirm) {
                            wx.openSetting({
                                success(res) {
                                    wx.getSetting({
                                        success: res => {
                                            if (res.authSetting['scope.userInfo']) {
                                                // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
                                                wx.getUserInfo({
                                                    success: res => {
                                                        // 可以将 res 发送给后台解码出 unionId
                                                        that.globalData.userInfo = res.userInfo
                                                        // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
                                                        // 所以此处加入 callback 以防止这种情况
                                                        if (that.userInfoReadyCallback) {
                                                            that.userInfoReadyCallback(res)
                                                        }
                                                    }
                                                })
                                            } else {

                                            }
                                        }
                                    })
                                }
                            })
                        }
                    }
                })
            }
        })
    },
    getLocation: function () {
        var that = this;
        // 经度
        var longitude = ""
        // 纬度
        var latitude = ""
        wx.getLocation({
            // "wgs84"  "gcj02"地图中推荐使用该类型
            type: "wgs84",
            isHighAccuracy: true, // 高精度获取位置
            success(res) {
                longitude = res.longitude || "";
                latitude = res.latitude || "";
                //  调用逆地址解析 获取详细地址  如果用户拒绝授权 返回空
                if (longitude != "" && latitude != "") {
                    that.reverseAnalysis(latitude, longitude)
                }
            }, fail(res) {
                // 引导用户重新授权
                wx.showModal({
                    title: "请授权我们使用地址",
                    success(res) {
                        if (res.confirm) {
                            wx.openSetting({
                                success(res) {
                                    wx.getLocation({
                                        // "wgs84"  "gcj02"地图中推荐使用该类型
                                        type: "wgs84",
                                        isHighAccuracy: true, // 高精度获取位置
                                        success(res) {
                                            longitude = res.longitude || "";
                                            latitude = res.latitude || "";
                                            //  调用逆地址解析 获取详细地址  如果用户拒绝授权 返回空
                                            if (longitude != "" && latitude != "") {
                                                that.reverseAnalysis(latitude, longitude)
                                            }
                                        }
                                    })
                                }
                            })
                        }
                    }
                })
            }
        })


    },
    reverseAnalysis: function (latitude, longitude) {
        if (this.amapInstance == null) {
            // 高德地图实例
            this.amapInstance = new amap.AMapWX({key: '261215a8a5edf2bb893e5664382e945e'})
        }
        this.amapInstance.getRegeo({
            location: `${longitude},${latitude}`,
            success: function (data) {
                var address;
                if (data) {
                    const regeocodeData = data[0].regeocodeData;
                    address = {
                        city: regeocodeData.addressComponent.city,
                        district: regeocodeData.addressComponent.district,
                        province: regeocodeData.addressComponent.province,
                        address: regeocodeData.formatted_address,
                    }
                    var token = wx.getStorageSync("token");
                    wx.request({
                        url: `${ipUtil.host}${requestUtil.firstLoginAddress}?token=${token}`,
                        data: address,
                        method: "POST",
                        success(res) {
                        }
                    })
                }
            }, fail: function (res) {
                console.log("获取失败")
            }
        })
    },

    

    amapInstance: null,
    globalData: {
        // userInfo: {},
        login: false,
        isFirstLogin: false,
        role: "",
        id:''
    },
    checkSession: function () {
        var that = this;
        wx.checkSession({
            success: function (res) {
            },
            fail: function (res) {
                wx.showModal({
                    title: '提示',
                    content: '你的登录信息过期了，请重新登录',
                })
                that.login();
            }
        })
    },
})